#ifndef _GO_BANG_
#define _GO_BANG_

#include <iostream>

#include <cstdio>
#include <cstdlib>
#include <cstring>

#define ROW 15
#define COL 15
#define BACK 'B'
#define WHITE '0'

/**
 * 期盼初始化函数，提供当前函数的参数是个 char 类型二维数组，
 * 数组的一维下标和二维下标由 ROW 和 COL 两个宏常量控制
 * 
 * @param chess_board 用户提供的 char 类型二维数组
 */
void gobang_ui_init(char chess_board[][COL]);

/**
 * 期盼展示函数，提供当前函数的参数是个 char 类型二维数组
 * 数组的一维下标和二位小标由 ROW 和 COL 两个宏常量控制
 * 
 * @param chess_board 用户提供的 char 了类型二维数组
 */
void show_chess_board(char chess_board[][COL]);

/**
 * 落子函数，根据当前玩家提供的行列下标位置，骡子对应玩家的妻子
 * 
 * @param chess_board 当前五子棋对应的棋盘 char 类型二维数组
 * @param row_index   用户指定落子的行下标位置
 * @param c0l_index   用户指定罗自动列下标位置
 * @param player      对应用户，利用 BLACK 和 WITE  两个宏区分用户玩家
 * @return 落子成功返回 1 ，否则返回 0,。
 */
 int place_stone(char chess_board[][COL], int row_index, int col_index, char player);

 /**
  * 判断是否游戏获胜条件
  * 
  * @param chess_board 当前五子棋对应棋的棋盘 char 类型数组
  * @param row_index   用户指定落子的行下标位置
  * @param col_index   用户指定落子的列下标位置
  * @param player      对应用户，利用 BLACK 和 WHITE 两个宏区分用户玩家
  * @return  游戏胜利返回 1 ， 否则返回 0 
  */
 int is_win(char chess_board[][COL], int row_index, char player);

 #endif